/*
 * acm1909.c
 *
 *  Created on: 10 Apr 2010
 *      Author: xuxu
 */

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n;
int num[21];
int mark[21];
int bo;
int average;
int square[4];

int cmp(const void *a,const void *b)
{
	return *(int *)b-*(int *)a;
}

void finder(int node,int temp,int con)
{
	int i;
	if(con==3)
	{
		bo=1;
		return ;
	}
	if(bo)
		return ;
	if(temp==average)
	{
		for(i=0;i<n;i++)
			if(0==mark[i])
				break;
		mark[i]=1;
		finder(i+1,num[i],con+1);
		mark[i]=0;
		return ;
	}

	for(i=node;i<n;i++)
	{
		if(0==mark[i]&&num[i]+temp<=average)
		{
			mark[i]=1;
			finder(i+1,num[i]+temp,con);
			mark[i]=0;
		}
	}
}

int main()
{
	int count;
	int i;
	int total;
	scanf("%d",&count);
	while(count--)
	{
		total=0;
		scanf("%d",&n);
		for(i=0;i<n;i++)
		{
			scanf("%d",&num[i]);
			total+=num[i];
		}
		if(0!=total%4)
		{
			printf("no\n");
			continue;
		}
		average=total/4;
		qsort(num,n,sizeof(num[0]),cmp);
		if(num[0]>average||(num[0]<average&&num[0]+num[n-1]>average))
		{
			printf("no\n");
			continue;
		}
		bo=0;
		memset(mark,0,sizeof(mark));
		memset(square,0,sizeof(square));
		mark[0]=1;
		finder(1,num[0],0);
/*		finder2(0);*/
		if(bo)
			printf("yes\n");
		else
			printf("no\n");
	}
	return 0;
}


